﻿/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dblayer;

import entity.Schueler;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author jk
 */
public class DatabaseLayer {

    private Connection conn = null;
    //private JdbcDemo instance = null;

    public DatabaseLayer() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "123456");
            System.out.println("Connected!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * Liefert Schueler Objekt mit bestimmter ID
     * @param id
     * @return 
     */
    public Schueler getSchuelerById(int id) throws SQLException {
        String sql = "SELECT * from `turnierverwaltung`.`schueler` WHERE idSchueler = " + id;
        Statement query;

        query = conn.createStatement();
        ResultSet rs = query.executeQuery(sql);

        if (rs.next()) {
            Schueler s = new Schueler();

            s.setIdSchueler(rs.getInt("idSchueler"));
            s.setGebDatum(rs.getDate("geburtsdatum"));
            s.setNachname(rs.getString("nachname"));
            s.setVorname(rs.getString("vorname"));
            s.setWeiblich(rs.getBoolean("weiblich"));
            return s;
        }

        return null;
    }

    /**
     * Liefert Liste aller Schueler
     * @return
     * @throws SQLException 
     */
    public List<Schueler> getAllSchueler() throws SQLException {

        String sql = "SELECT * from `turnierverwaltung`.`schueler`";
        Statement query = conn.createStatement();
        ResultSet rs = query.executeQuery(sql);

        List<Schueler> list = new ArrayList<Schueler>();
        Schueler s;

        while (rs.next()) {
            s = new Schueler();
            s.setIdSchueler(rs.getInt("idSchueler"));
            s.setGebDatum(rs.getDate("geburtsdatum"));
            s.setNachname(rs.getString("nachname"));
            s.setVorname(rs.getString("vorname"));
            s.setWeiblich(rs.getBoolean("weiblich"));
            list.add(s);
        }

        return list;
    }

    /**
     * Fügt neuen Schüler in DB ein
     * @param s 
     */
    public void insertSchueler(Schueler s) throws SQLException {

        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

        String sql = "INSERT INTO `turnierverwaltung`.`schueler` (Vorname, Nachname, Geburtsdatum, weiblich) VALUES"
                + "('" + s.getVorname() + "','" + s.getNachname() + "','" + sdf.format(s.getGebDatum()) + "','" + (s.isWeiblich() ? "1" : "0") + "')";

        Statement query = conn.createStatement();
        query.executeUpdate(sql);



    }

    /**
     * Updatet den Schüler in der DB
     * @param s 
     */
    public void updateSchueler(Schueler s) throws SQLException {

        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

        String sql = "UPDATE `turnierverwaltung`.`schueler` SET vorname='" + s.getVorname()
                + "', nachname = '" + s.getNachname() + "', geburtsdatum = '" + sdf.format(s.getGebDatum())
                + "', weiblich='" + (s.isWeiblich() ? "1" : "0") + "' "
                + "WHERE idSchueler = " + s.getIdSchueler();

        Statement query = conn.createStatement();
        query.executeUpdate(sql);

    }

    /**
     * Löscht Schüler nach bestimmter ID
     * @param s 
     */
    public void deleteSchueler(Schueler s) throws SQLException {
        String sql = "DELETE FROM `turnierverwaltung`.`schueler` WHERE idSchueler = '" + s.getIdSchueler() + "'";
        Statement query = conn.createStatement();
        
        query.executeUpdate(sql);
        

    }
}
